/**
 * Copyright (c) 2025   All rights reserved.
 * <p>
 * https://www.sdl.io
 * <p>
 * 版权所有，侵权必究！
 */

package io.sdl.service;

import io.sdl.common.service.BaseService;
import io.sdl.entity.TokenEntity;

import java.util.Date;
import java.util.Optional;

/**
 * 用户Token
 *
 * @authorDc 1211734836@qq.com
 */
public interface TokenService extends BaseService<TokenEntity> {

	TokenEntity getByToken(String token);

	/**
	 * 账号验证
	 * @param token  用户token
	 * @param mobile   用户手机号
	 * @return 返回token信息
	 */
	TokenEntity getByTokenAMobile(String token, String mobile);

	/**
	 * 生成token
	 * @param userId  用户ID
	 * @return 返回token信息
	 */
	TokenEntity createToken(Long userId);

	/**
	 * 设置token过期
	 * @param userId 用户ID
	 */
	void expireToken(Long userId,boolean login);

	Optional<String> validateToken(String token);


	/**
	 * 检查token是否过期
	 * @param token 用户ID
	 * @param time  当前时间
	 */
	TokenEntity checkToken (String token, String time);

}
